
; B3AC-2 - Apple-Cat insert for BYE5 			- 07/30/85
;
;		Novation Apple-Cat routines for BYE3
;
; This version is for the Apple ][ running with an Apple-Cat modem card.
; Note:  This is an insert, not an overlay.
;
;	This routine will not function due to changes made in Bye335.
;	However, it is being kept with the library, because a version
;	of BYE will soon appear that will allow this overlay to work.
;
; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
;
; 07/30/85 - Restored to original format		- pst
; 06/22/82 - Created					- Dave Roznar
;
; =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =   =
;
; Apple-Cat modem address equates
;
SLOT	EQU	2		; Apple-Cat residing in Slot #2
SLOTVAL	EQU	SLOT*16		; Number to add for proper slot
;
MCSTATP	EQU	0E080H+SLOTVAL	; Carrier status
LNCTL	EQU	0E081H+SLOTVAL	; Line control
PHCTL	EQU	0E082H+SLOTVAL	; Phone control
BSRINT	EQU	0E083H+SLOTVAL	; BSR and interrupts
RCVCTL	EQU	0E089H+SLOTVAL	; Receiver control
MDPORT	EQU	0E08AH+SLOTVAL	; Mode (parity/stop bits) port
BAUDPT	EQU	0E08BH+SLOTVAL	; Baud rate port
XRINT	EQU	0E08CH+SLOTVAL	; Transmit/receive interrupts
TRXCTL	EQU	0E08DH+SLOTVAL	; Transmitter control
MODSEL	EQU	0E08FH+SLOTVAL	; Modem select port
;
RSPORT	EQU	0E08FH+SLOTVAL	; Receive status port
RDPORT	EQU	0E08BH+SLOTVAL	; Receive data port
TSPORT	EQU	0E08FH+SLOTVAL	; Transmit status port
TDPORT	EQU	0E08EH+SLOTVAL	; Transmit data port
;
DAV	EQU	00001000B	; Data available
TBMT	EQU	00010000B	; Transmit buffer empty
DCD	EQU	00100000B	; Data carrier detect
;
;-----------------------------------------------------------------------
;
; See if we still have a carrier - if not, return with the zero flag set
;
MDCARCK:LDA	MCSTATP		; Get carrier status
	ANI	DCD		; Got carrier?
	RZ
	ORI	255
	RET
;
; Disconnect and wait for an incoming call
;
MDINIT:	MVI	A,1FH		; Turn off transmitter
	STA	TRXCTL
	MVI	A,0		; Hang up phone
	STA	PHCTL
	RET
;
; Input a character from the modem port
;
MDINP:	MVI	A,10H		; Clear receiver
	STA	TRXCTL
	LDA	RDPORT		; Read character
	RET
;
; Check the status to see if a character is available.	If not, return
; with the zero flag set.  If yes, use 0FFH to clear the flag.
;
MDINST:	LDA	RSPORT		; Get modem status
	ANI	DAV		; Data available?
	RZ			; Nope
	ORI	255		; Return true
	RET
;
; Send a character to the modem
;
MDOUTP:	STA	TDPORT		; Send character
	RET
;
; See if the output is ready for another character
;
MDOUTST:LDA	TSPORT		; Get modem status
	ANI	TBMT		; Check transmit buffer empty bit
	RZ
	ORI	255
	RET
;
; Reinitialize the modem and hang up the phone by dropping DTR and
; leaving it inactive.
;
MDQUIT:	 IF	IMODEM		; If using a smartmodem
	CALL	IMQUIT
	 ENDIF			; IMODEM
;
MDSTOP:	MVI	A,1FH		; Turn off transmitter
	STA	TRXCTL
	MVI	A,0		; Hang up phone
	STA	PHCTL
	RET
;
; The following routine sets the baudrate.  BYE5 asks for the maximim
; speed you have available.
;
SET1200	EQU	$		; 1200 bps not supported
SET2400	EQU	$		; 2400 bps not supported
	ORI	255		; Make sure the Zero flag isn't set
	RET
;
SET300:	CALL	MDINP		; Set for 300 baud
	CALL	MDINP
	MVI	A,22H		; Set 300 baud
	STA	BAUDPT
	MVI	A,03H		; Set 8 data bits, no parity, 1 stop bit
	STA	MDPORT		; 03H = 1 stop, 0DH = 2 stop bits
	XRA	A
	RET
;			       end
;-----------------------------------------------------------------------
